﻿using System;
using System.Collections.Generic;
using System.Linq;
using Antlr.Runtime.Tree;
using SilverlightGraph.Graph;

/// <summary>
/// Summary description for EdgeLabel
/// </summary>
public class EdgeLabel
{
    string source, target, result, wp, sp; // the result is used for slicing, to store the value of sp -> wp
    Graph1 dot; // stores the graph
    string plain; // stores the plain/dot text
    List<EdgeLabel> previousSatisfied;

        public EdgeLabel()
        {
            source = "";
            target = "";
            result = "";
            plain = "";
            dot = null;
            previousSatisfied = new List<EdgeLabel>();
        }

        public EdgeLabel(string s, string t)
        {
            source = s;
            target = t;
            result = "";
            plain = "";
            dot = null;
            previousSatisfied = new List<EdgeLabel>();
        }

        public EdgeLabel(string s, string t, string wp1, string sp1)
        {
            source = s;
            target = t;
            wp = wp1;
            sp = sp1;
            result = "";
            plain = "";
            dot = null;
            previousSatisfied = new List<EdgeLabel>();
        }

        public virtual string Source
        {
            get { return source; }
            set { source = value; }
        }

        public virtual string Target
        {
            get { return target; }
            set { target = value; }
        }

        public virtual string WP
        {
            get { return wp; }
            set { wp = value; }
        }

        public virtual string SP
        {
            get { return sp; }
            set { sp = value; }
        }

        public virtual string Result
        {
            get { return result; }
            set { result = value; }
        }

        public virtual string Plain
        {
            get { return plain; }
            set { plain = value; }
        }

        public virtual Graph1 Graph
        {
            get { return dot; }
            set { dot = value; }
        }

        public virtual List<EdgeLabel> PreviousSatisfiedEdges
        {
            get { return previousSatisfied; }
            set { previousSatisfied = value; }
        }
}
